[Amazon Connect] 既存の顧客かどうかをSalesforceから検索して問い合わせフローを分岐する
1 はじめに
AIソリューション部の平内(SIN)です。
Amazon Connect(以下、Connect)を会社の代表電話などとして置き換えた場合、顧客からの重要な着信と、セールス電話などをうまく切り分けられるかも知れません。
顧客の情報がSalesforceで管理されているという前提で、発信者番号が、登録されている番号か否かで処理を分岐する問い合わせフローを考えてみました。
イメージは以下のような感じです。
- ① A社の担当者として登録されている 番号から電話があった場合、A社担当に電話を転送します。
- ② salexforceに登録されていない番号から電話あった場合は、共通電話へ転送します。
- ③ 着信時にSalexforceへの問い合わせを行い、電話番号が登録されているかどうかを確認し、処理を分岐します。
2 Saleforce
Salesforce上には、顧客と顧客担当者の「電話番号」及び「携帯電話」が、検索のターゲットとなります。
3 jsforce
Salesforceで公開されている、jsforceを使用すると、内部のデータに簡単にアクセス可能です。
https://jsforce.github.io/start/
下記のようにインストールすることで、Node.jsからでも、コマンドラインからでも利用可能です。
$ npm install jsforce -g
下記は、コマンドラインから顧客の電話番号を取得しています。
$ jsforce -u username -p password --sandbox -e "query('select name,phone from account')" {"totalSize":3,"done":true,"records":[{"attributes":{"type":"Account","url":"/services/data/v42.0/sobjects/Account/0016D00000AzgsSQAR"},"Name":"C社","Phone":"+81-60-0000-3333"},{"attributes":{"type":"Account","url":"/services/data/v42.0/sobjects/Account/0016D00000AzkgCQAR"},"Name":"A社","Phone":"+81-30-0000-1111"},{"attributes":{"type":"Account","url":"/services/data/v42.0/sobjects/Account/0016D00000B1U4LQAV"},"Name":"B社","Phone":"+81-30-0000-2222"}]}
通常のselcel文と考えるとテーブル名として指定する箇所は、今回の場合下記のとおりです。
- 顧客: Account
- 顧客担当者: Contact
また、カラムとして指定する箇所は、次のようなものになります。
- 名前: Name
- 電話: Phone
- 携帯番号: MobilePhone
4 Lambda
下記は、Connectから呼び出すLambdaの一例です。
発信者番号から、顧客担当者の電話を検索して、ヒットした場合は、担当者の名前を返すようになっています。
このLamndaの戻り値に従って、コンタクトフローを分岐することで所要の処理が可能になります。
カラムやテーブルを組み合わせれば、必要な検索を実装できるはずです。
'use strict'; const jsforce = require('jsforce'); exports.handler = async function(event, _context) { console.log(JSON.stringify(event)); // 発信者番号 const phone = event.Details.ContactData.CustomerEndpoint.Address; // Salesfoceのアカウント情報 const username = process.env.USERNAME; const password = process.env.PASSWORD; const conn = new jsforce.Connection({ loginUrl : 'https://login.salesforce.com' }); try{ await conn.login(username, password); const sql = "select Name, Phone from Contact where Phone='" + phone +"'"; const data = await conn.query(sql) if(data.records.length > 0){ return {"Name": data.records[0].Name} } } catch (err) { } return {"Name": ""} }
5 最後に
jsforceでは、OAuth経由でのアクセスも可能です。この場合、ログインの記述が下記のように変化するだけです。
const conn = new jsforce.Connection({ oauth2 : { loginUrl : 'https://login.salesforce.com', clientId : oauth_client_id, clientSecret : oauth_client_secret } });
※ Salesfaorceでは、OAuthを有効にする必要があります。
参考:[日本語Alexa] Salesforceにアカウントリンクしてみました
MNP未対応など、いくつかの制約はありますが、会社の電話をConnectで受けると、いろいろ便利な応用ができる予感がします。
弊社では、Amazon Connectに関するキャンペーンを行なっています。
【6/27(木)東京】「1時間でクラウド型コンタクトセンターを構築できるようになる!無料Amazon Connectハンズオンセミナー」を開催します
また、音声を中心とした各種ソリューションの開発支援を行なっております。